perm filename FLAT.PRF[W77,JMC] blob sn#258178 filedate 1977-01-13 generic text, type T, neo UTF8
*****∧I INDUCTION1;

1 (∀x.(ATOM x⊃∀u.LIST FLAT(x,u))∧∀x.((¬ATOM x∧(∀u.LIST FLAT(CAR x,u)∧∀u.LIST FLAT(CDR x,u)))⊃∀u.LIST FLAT(x,u)))%
⊃∀x u.LIST FLAT(x,u)  

*****∀E FLAT x,u;

2 FLAT(x,u)=IF ATOM x THEN CONS(x,u) ELSE FLAT(CAR x,FLAT(CDR x,u))  

*****DISTRIB;

3 FLAT(x,u)=IF ATOM x THEN CONS(x,u) ELSE FLAT(CAR x,FLAT(CDR x,u))≡IF ATOM x THEN FLAT(x,u)=CONS(x,u) ELSE FLAT%
(x,u)=FLAT(CAR x,FLAT(CDR x,u))  

*****ASSUME ATOM x;

4 ATOM x  (4)

*****TAUT FLAT(x,u)=CONS(x,u) ↑↑↑:↑;

5 FLAT(x,u)=CONS(x,u)  (4)

*****∀E CONS2 x,u;

6 LIST CONS(x,u)  

*****TAUTEQ LIST FLAT(x,u) ↑↑:↑;

7 LIST FLAT(x,u)  (4)

*****∀I ↑ u;

8 ∀u.LIST FLAT(x,u)  (4)

*****⊃I 4⊃↑;

9 ATOM x⊃∀u.LIST FLAT(x,u)  

*****∀I ↑ x;

10 ∀x.(ATOM x⊃∀u.LIST FLAT(x,u))  

*****ASSUME ¬ATOM x;

11 ¬ATOM x  (11)

*****TAUT FLAT(x,u)=FLAT(CAR x,FLAT(CDR x,u)) 2:3,↑;

12 FLAT(x,u)=FLAT(CAR x,FLAT(CDR x,u))  (11)

*****ASSUME ∀u.LIST FLAT(CAR x,u);

13 ∀u.LIST FLAT(CAR x,u)  (13)

*****ASSUME ∀u.LIST FLAT(CDR x,u);

14 ∀u.LIST FLAT(CDR x,u)  (14)

*****∀E ↑ u;

15 LIST FLAT(CDR x,u)  (14)

*****∀E ↑↑↑ FLAT(CDR x,u);

16 LIST FLAT(CDR x,u)⊃LIST FLAT(CAR x,FLAT(CDR x,u))  (13)

*****TAUTEQ LIST FLAT(x,u) 12,↑↑:↑;

17 LIST FLAT(x,u)  (11 13 14)

*****∀I ↑ u;

18 ∀u.LIST FLAT(x,u)  (11 13 14)

*****⊃I 14⊃↑;

19 ∀u.LIST FLAT(CDR x,u)⊃∀u.LIST FLAT(x,u)  (11 13)

*****⊃I 13⊃↑;

20 ∀u.LIST FLAT(CAR x,u)⊃(∀u.LIST FLAT(CDR x,u)⊃∀u.LIST FLAT(x,u))  (11)

*****⊃I 11⊃↑;

21 ¬ATOM x⊃(∀u.LIST FLAT(CAR x,u)⊃(∀u.LIST FLAT(CDR x,u)⊃∀u.LIST FLAT(x,u)))  

*****TAUT (¬ATOM x∧(∀u.LIST FLAT(CAR x,u)∧∀u.LIST FLAT(CDR x,u)))⊃∀u.LIST FLAT(x,u) ↑;

22 (¬ATOM x∧(∀u.LIST FLAT(CAR x,u)∧∀u.LIST FLAT(CDR x,u)))⊃∀u.LIST FLAT(x,u)  

*****∀I ↑ x;

23 ∀x.((¬ATOM x∧(∀u.LIST FLAT(CAR x,u)∧∀u.LIST FLAT(CDR x,u)))⊃∀u.LIST FLAT(x,u))  

*****TAUT ∀x u.LIST FLAT(x,u) 1,10,↑;

24 ∀x u.LIST FLAT(x,u)